﻿using System.Collections.Generic;
using System.Drawing;
using kp.compiler.contract;
using kp.koordinator.contract;
using kp.rechenwerk.contract;

namespace kp.koordinator
{
  public class Koordinator : IKoordinator
  {
    private readonly ICompiler compiler;
    private readonly IRechenwerk rechenwerk;

    public Koordinator(ICompiler compiler, IRechenwerk rechenwerk)
    {
      this.compiler = compiler;
      this.rechenwerk = rechenwerk;
    }

    public IEnumerable<PointF> Berechne(string formel, double xMin, double xMax, int werteanzahl)
    {
      var funktion = this.compiler.Compile(formel);
      var punkte = this.rechenwerk.Berechne(funktion, xMin, xMax, werteanzahl);

      return punkte;
    }
  }
}
